package com.nettyBasic.n4_futureAndPromise;

import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.*;

/**
 * @author： pang-yun
 * @date： 2021-09-13 11:22
 * 功能目的 ：用于  实验jdk 中  future
 * <p>
 * executor /ɪɡˈzekjətər/
 * future.get  阻塞方法  等待返回任务结果
 */
@Slf4j
public class JdkFuture {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        // 1. 创建线程池
        ExecutorService service = Executors.newFixedThreadPool(2);

        // 2.提交任务   submit 有两种实现  runAble 不提供返回结果  callable 提供返回结果
        Future<Integer> future = service.submit(new Callable<Integer>() {
            @Override
            public Integer call() throws Exception {
                log.info("calculate  beginning.............");
                Thread.sleep(1000);
                return 88;
            }
        });

        // 3. 通过主线程来获取 任务线程结果
        log.info("waiting result.....");
        Integer integer = future.get(); // future.get 是阻塞方法 主方法会一直停在这里  直到任务 线程有结果返回
        log.info("result: {}", integer);
    }
}
